Skip to main content

Agent 网关

Agent 网关是业务代码与模型、工具之间的统一入口,承担协议转换、路由、配额、安全与可观测数据产生五类职责。本专题拆解四个开源实现的源码,并横向对比国内外十家托管产品。

一、网关处理的六件事

一次模型调用在网关里依次经过的六道处理业务代码只写模型名不关心后端① 协议转换抹平各家请求体差异省掉它 —换一家 provider业务代码全改② 路由同名模型下选一个后端省掉它 —所有流量压在同一个后端上③ 容错fallback · 熔断健康检查省掉它 —后端一抖用户就看到报错④ 多租户虚拟密钥 · 配额计费归属省掉它 —账单只有一张算不出谁花的⑤ 安全可观测脱敏 · 过滤审计 · 埋点省掉它 —出了事查不到也没人拦得住⑥ MCP 代理工具聚合工具级授权省掉它 —每个 Agent 自己连一堆外部工具各家 providerMCP Server① ② ③ 只和模型调用有关 —— 这是「LLM 网关」的范围⑥ 是把工具调用也纳进来才长出来的 —— 「Agent 网关」的范围④ ⑤ 两边都要:不管流量打向模型还是工具,都得知道是谁发的、花了多少、有没有越权
六道处理按请求经过的先后顺序排列。前三道决定「这次调用能不能成功」,第四第五道决定「事后能不能说清是谁调的」,第六道是 2026 年才被并进来的新职责。

这六项不是设计出来的,是每个把大模型用到一定规模的团队必然会重新实现一遍的东西 —— 01 篇从五行代码开始推导出它们。

1.1 图里这六个词的意思

第一次读这张图,有六个词会挡路。先给出够用的定义,正文各篇再展开:

意思哪一篇细讲
provider提供模型 API 的一方,比如 OpenAI、Anthropic、Bedrock、通义。它们的接口两两不同,这正是①要抹平的东西01
fallback(兜底)首选后端失败时自动改调另一个,业务代码不感知。注意它治的是「这一次调用」,不是「这个任务」03
熔断某个后端连续失败到一定次数后,网关暂时不再往它发请求,冷却一段时间再试。防的是把请求持续喂给一个已经挂了的后端03
虚拟密钥网关自己签发的一套 key。真实的 provider key 只有网关持有,业务方拿到的是虚拟 key,key 上绑着团队、配额和可用模型范围04
配额给某个团队或某把 key 设的用量上限,可按请求数、token 数或美元数计。超了就拒绝或降级04
MCPModel Context Protocol,Anthropic 2024 年底提出、现已成为事实标准的一套协议,规定 Agent 怎么发现和调用外部工具。它对工具的意义,相当于 HTTP 对网页的意义05

二、四个开源实现的形态差异

四个拆解对象分属四种部署形态。形态指的不是功能多少,而是网关代码到底跑在谁的进程里 —— 这一件事决定了它能不能独立升级、崩了会不会带崩业务、每次调用要多付多少延迟:

形态一 · 库业务进程你的代码LiteLLM同一个进程,函数调用LiteLLM · Python装机量最大,功能面最全接入只需改一行 base_url代价 · 与业务同生共死代价 · 受 GIL 限制,吃不住高并发形态二 · 独立进程业务进程agentgateway独立部署,可单独扩缩容agentgateway · RustLinux 基金会治理MCP / A2A 是一等公民代价 · 每次调用多一跳网络延迟代价 · 多一个要自己运维的服务形态三 · Envoy 扩展业务Envoy扩展进程Envoy 把请求外发给扩展进程处理Envoy AI Gateway · GoEnvoy 官方,K8s CRD 驱动直接复用 Envoy 的成熟生态代价 · 受 Envoy 的扩展模型约束代价 · 不在 K8s 上基本没法用形态四 · Wasm 插件业务Higress 网关进程Wasm 沙箱插件跑在网关进程内的沙箱里Higress · Go国内落地最多插件可热插拔,改策略不重启代价 · 沙箱内能做的事受限代价 · 跨实例共享状态要自建从左到右,网关代码离业务代码越来越远:耦合越来越轻,能独立演进;同时多出来的网络跳数与运维对象也越来越多。
四种形态的真正差别不在功能清单,而在这张图上方的拓扑 —— 网关代码到底跑在谁的进程里。这决定了它能不能独立升级、崩了会不会带崩业务、以及每次调用要多付多少延迟。

2.1 图里这四个词的意思

意思
GILGlobal Interpreter Lock,CPython 的全局解释器锁。同一时刻只允许一个线程执行 Python 字节码,所以纯 Python 服务很难靠多线程吃满多核。这是 LiteLLM 作为库嵌进业务进程时最主要的性能天花板
ext_procExternal Processing,Envoy 的一种扩展方式。Envoy 把请求通过 gRPC 外发给一个独立进程处理,拿回结果再继续转发。好处是扩展逻辑用什么语言写都行,代价是每次调用多一次进程间通信
CRDCustom Resource Definition,Kubernetes 的自定义资源。有了它,配置网关就变成「写一段 YAML apply 上去」,和配置 Deployment、Service 是同一套操作方式
proxy-wasm 沙箱一套让 WebAssembly 模块跑在代理内部的规范。插件被编译成 Wasm 字节码,装在网关进程里的沙箱中运行 —— 能热插拔、崩了不带崩网关,但只能通过规范开放的那些接口和外界打交道,做不了任意系统调用

三、正文构成

#标题覆盖内容
01网关是什么从五行代码推导出六项能力,术语基线
02四种形态库 / 进程 / Envoy 扩展 / Wasm 插件的取舍
03路由与容错LiteLLM 六种路由策略、Higress 密钥故障转移
04多租户与配额Redis Lua 限流、Envoy 描述符、事后计费难题
05MCP 网关工具聚合、会话映射、通知流合并、工具级授权
06缓存四层缓存分工、语义缓存的阈值与串号风险
07Token 速率与 QoSTTFT / TPOT、Fast mode、独占容量、自建隔离
08云厂商怎么做阿里云 · AWS · 华为云 · 腾讯云
09国外托管网关Kong · Cloudflare · Azure · Apigee · Vercel · OpenRouter
10性能与形态代价开销来源、压测方法、四种形态代价小结

四、拆解对象

4.1 开源实现

项目协议语言选取理由
BerriAI/litellm56,709NOASSERTIONPython装机量最大,功能面最全,正在用 Rust 重写内核
higress-group/higress9,138Apache-2.0Go国内落地最多,Wasm 插件形态的代表
agentgateway4,419Apache-2.0RustLF 治理,唯一为 MCP / A2A 原生设计
envoyproxy/ai-gateway1,937Apache-2.0Gov1.0 已发布,Envoy 官方,K8s CRD 驱动
maximhq/bifrost7,414Apache-2.0Go性能对照组

Kong(★44,001)与 Traefik(★64,488)star 更高但非 AI 原生,仅在形态对比时引用。

4.2 Portkey 的状态变更

Portkey 曾是主要的开源 AI 网关之一。Palo Alto Networks 于 2026-04-30 宣布收购、05-29 完成交割,Portkey 成为 Prisma AIRS 的核心 AI 网关。

开源仓库最后一次提交为 2026-05-25,最后一个 release 停在 v1.15.2(2026-01-12)。最后几个提交均为安全修复(redact provider options in logsdisable logs when admin token not set)。

这是开源 AI 网关的第一次大规模整合,也是本专题通向 Agent 安全的衔接点。

五、与其他专题的关系